#define _CRT_SECURE_NO_WARNINGS 1

	
远程提交三板斧： 
1. git add .                          (当前路径下所有文件 或 提交文件名 同步到本地 .git) 
2. git commit - m "...日志..."        (输入准备提交的 日志)
3. git push                           (同步到远端，输入 gitee 的账户、密码)
   

			《 Linux_12_git 》


 git --version  //是否安装了 git 
 sudo yum install -y git	//yum安装 git

	userdel -r		//删除：就是删除用户的相关数据， 会把对应配置文件也删除。



git status                    // 查看本地和远端的状态

git add.                      // 添加到暂存区
git commit -m "...日志..."    // 提交到本地仓库
git push                      // 同步本地仓库内容到远端
git log                       // 查询版本历史


.gitignore                    // 不想同步到远端的后缀，存放处 
//(以该文件 .gitignore 里面存放的 后缀 *.txt 结尾的文件 (* 通配符(所有 以* 后面内容结尾的文件))， git commit -m 时 不会同步到 本地的 .git 仓库，git push 时自然就不会同步到远端了！)


		《 本地 Linux 绑定 gitee 》

为确保你提交的代码身份被 Gitee 正确识别，请执行以下命令完成配置 
git config --global user.name 'xxxx'				// 绑的gitee  (打开 gitee 仓库的 克隆/下载 位置有 (这里用 HTTPS 模式演示))
git config --global user.email 'yyyy.com'			// 绑的邮箱


		《 从远端获取数据到本地 》
下载代码请复制以下命令到终端执行:
git clone https ://gitee.com/账户/linux_test.git	// 拉取远端仓库到本地


拉取完成：
[a@192 b]$ ll
drwxrwxr - x. 3 a a 73 Mar 18 09:15 linux_test	// 本地就得到了远端仓库的内容

[a@192 linux_test]$ ll - a
仓库内容：...
drwxrwxr - x. 8 a a 163 Mar 18 09 : 15.git		// 本地的git 仓库，用户无法直接进行修改【暂存区(修改记录...)】
- rw - rw - r--. 1 a a 430 Mar 18 09 : 15.gitignore
- rw - rw - r--. 1 a a 832 Mar 18 09 : 15 README.en.md
- rw - rw - r--. 1 a a 921 Mar 18 09 : 15 README.md

			《 拷贝文件 》
拷贝 上级目录的 上级目录中 a文件夹中 / 的process 以及其中全部文件，到当前目录。 
[a@192 linux_test]$ cp .. / .. / a / process . - rf

 process文件包含内容：
[a@192 linux_test]$ tree process
process
├── Main.c
├── Makefile
├── processbar
├── Processbar.c
└── Processbar.h



			《 把本地文件同步到远端 》

[a@192 linux_test]$ git add process			// 同步当前文件下 process 到远端仓库。 / git add . (同步当前文件下的所有内容到远端仓库)
[a@192 linux_test]$ git status				// 查看本地和远端的状态
# On branch master			//在分支主机上
# Changes to be committed :	//要提交的更改		// 要提交用：git commit - m "...日志..."	/ git commit 提交到本地仓库，与本地仓库对比
#   (use "git reset HEAD <file>..." to unstage)	// 要重置用：git reset
#
#	new file:   process / Main.c
#	new file:   process / Makefile
#	new file:   process / Processbar.c
#	new file:   process / Processbar.h
#	new file:   process / processbar

 提交到了本地仓库中：
[a@192 linux_test]$ git commit - m "first commit, this is my process bar code"              //输入提交信息的备注 "备注内容"
 确认无误后，同步到远端：
 git push						// 同步本地仓库内容到远端
Username for 'https://gitee.com'             : 输入 gitee 账户...
Password for 'https://【账户...】@gitee.com' : 输入 gitee 密码...

本次提交信息：
Counting objects : 9, done.
Compressing objects : 100 % (8 / 8), done.
Writing objects : 100 % (8 / 8), 3.68 KiB | 0 bytes / s, done.
Total 8 (delta 1), reused 0 (delta 0)
remote : Powered by GITEE.COM[GNK - 6.4]
To https ://gitee.com/ 【账户：】/linux_test.git
【修改的ID】 ..3b4c789  master->master


再次查看本地和远端的状态
[a@192 linux_test]$ git status
# On branch master							//在分支主机上
nothing to commit, working directory clean	//无需提交，工作目录是干净的
[a@192 linux_test]$


——————————————————————————————————————————————————————————————————————————————


			《 查询版本历史 》

//第 2 次提交：
[a@192 linux_test]$ git log
commit 3b4c789721e00980467d49e388e867db23c7dd4d
Author : 【账户：】 <12987909 + 【账户：】@user.noreply.gitee.com>
Date : Mon Mar 18 09 : 47 : 05 2024 - 0700

//第 1 次提交：
first commit, this is my process bar code	// 自己写的提交的日志信息

commit 99088014ffd8a672a42b53eb4896bc2d0f61fe64
Author : 【账户：】 <12987909 + 【账户：】@user.noreply.gitee.com>
Date : Mon Mar 18 15 : 56 : 43 2024 + 0000

Initial commit
[a@192 linux_test]$



——————————————————————————————————————————————————————————————————————————————

		《 删除文件 》

[a@192 linux_test]$ cd process	// 打开文件，我们发现，我们吧二进制文件也提交到了远程仓库
[a@192 process]$ ll
total 28
- rw - rw - r--. 1 a a   78 Mar 18 09:31 Main.c
- rw - rw - r--. 1 a a   84 Mar 18 09 : 31 Makefile
- rwxrwxr - x. 1 a a 8768 Mar 18 09 : 31 processbar			//二进制文件 (假设提交错了，要进行删除)
- rw - rw - r--. 1 a a  769 Mar 18 09 : 31 Processbar.c
- rw - rw - r--. 1 a a  166 Mar 18 09 : 31 Processbar.h
[a@192 process]$ git rm processbar							//删除这个二进制文件
rm 'process/processbar'
[a@192 process]$ git add .									//修改完成 /重新添加到暂存区
[a@192 process]$ git commit - m "delete binary file"			//提交到本地仓库
[master e0357f2] delete binary file							//删除二进制文件(是在本地删除的)
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100755 process / processbar
[a@192 process]$ git push									//同步到远端

输入 gitee 账户：
输入 gitee 密码：

再次查看本地和远端的状态：
[a@192 process]$ git status
# On branch master
nothing to commit, working directory clean				//无需提交，工作目录是干净的 
 【删除成功！】


——————————————————————————————————————————————————————————————————————————————


——————————————————————————————————————————————————————————————————————————————


			《 debug / release 》
            
debug 可以被调试：
编译器形成可执行程序的时候
会给可执行程序添加调试信息!

release无法被调试：
gcc / g++默认编译，采用release模式
gcc / g++让他以 debug模式编译， - g

——————————————————————————————————————————————————————————————————————————————

		《 Makefile 》:

myprocess - debug:myprocess.c

gcc -o $@ $^ -g
.PHONY:clean
clean :
rm - f myprocess - debug

——————————————————————————————————————————————————————————————————————————————


//    《 process.c 》
//测试代码：

1 #include <stdio.h>
2
3 int AddToTarget(int start, int end)
4 {
5   int i = start;
6   int sum = 0;
7   for(; i <= end; i++)
8   {
9       sum += i;
10  }
11
12  return sum;
13 }
14
15 int main()
16 {
17  printf("run begin. . . [n" );
18
19  int result = 0;
20  result = AddToTarget(1,100) ;
21  printf("result: %d\n", result);
22
23  printf( "run end. . .\n");
24 }



		< 对比：debug / release >

 debug 一般比 release 大 ↓ ，多出了调试信息
-rwxrwxr - x. 1 a a  【8488】 Mar 19 10:54 myprocess
- rwxrwxr - x. 1 a a 【9752】 Mar 19 11 : 06 myprocess - debug

	< 读取可执行程序的符号表：>
 [a@192 aa]$ readelf - S myprocess - debug
Section Headers :
[Nr] Name              Type             Address           Offset
Size              EntSize          Flags  Link  Info  Align
	...
[27].debug_aranges    PROGBITS         0000000000000000  00001096
0000000000000030  0000000000000000           0     0     1
[28].debug_info       PROGBITS         0000000000000000  000010c6
00000000000000f8  0000000000000000           0     0     1
[29].debug_abbrev     PROGBITS         0000000000000000  000011be
000000000000009a  0000000000000000           0     0     1
[30].debug_line       PROGBITS         0000000000000000  00001258
000000000000005d  0000000000000000           0     0     1
[31].debug_str        PROGBITS         0000000000000000  000012b5
00000000000000d6  0000000000000001  MS       0     0     1
	...

——————————————————————————————————————————————————————————————————————————————

 或者忽略大小写 grep ：
[a@192 aa]$ readelf - S myprocess - debug | grep - i debug
[27].debug_aranges    PROGBITS         0000000000000000  00001096
[28].debug_info       PROGBITS         0000000000000000  000010c6
...

 myprocess - debug 多出的部分就是调试信息！

 而默认编译 myprocess 没有 debug 调试信息
 [a@192 aa]$ readelf - S myprocess | grep - i debug
 无任何信息...

readelf 读取 ELF 格式
Linux 二进制存储格式是 ==> ELF 格式


——————————————————————————————————————————————————————————————————————————————



